package com.t.bricks.bussiness.db.mapper.filecabinet;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import com.t.bricks.bussiness.db.entity.filecabinet.FileCabinet;

@Mapper
public interface FileCabinetMapper {
	
	/**
	 * 添加
	 * @Param fileCabinet
	 * @return
	 */
	int add(FileCabinet fileCabinet);

	/**
	 * 删除
	 * @Param sId
	 * @Param iVersion
	 * @return
	 */
	int del(@Param("sId") String sId, @Param("iVersion") Integer iVersion);

	/**
	 * 修改
	 * @param fileCabinet
	 * @return
	 */
	int edit(FileCabinet fileCabinet);
	
	/**
	 * 根据编号查询数据
	 * @Param sId
	 * @return
	 */
	FileCabinet findById(@Param("sId") String sId);

	/**
	 * 根据关键值取对象
	 * @Param fileCabinet
	 * @return
	 */
	FileCabinet findByKey(FileCabinet fileCabinet);

	/**
	 * 根据关键值查询数量
	 * @Param fileCabinet
	 * @return
	 */
	int findCountByKey(FileCabinet fileCabinet);

	/**
	 * 检查待修改内容是否存在重复数据
	 * @Param fileCabinetData
	 * @return 重复返回true
	 */
	int checkRepeatByEdit(FileCabinet fileCabinetData);

	/**
	 * 检查待新增内容是否存在重复数据
	 * @Param fileCabinetData
	 * @return 重复返回true
	 */
	int checkRepeatByAdd(FileCabinet fileCabinetData);

	/**
	 * 查询分页信息
	 * @Param sName
	 * @Param sProgram
	 * @Param iType
	 * @Param sMemo
	 * @Param orders
	 * @Param startRow
	 * @Param pageSize
	 * @return
	 */
	List<FileCabinet> findByPage(
		@Param("sName") String sName,
		@Param("sProgram") String sProgram,
		@Param("iType") Integer iType,
		@Param("sMemo") String sMemo,
		@Param("orders") String orders,
		@Param("startRow") int startRow,
		@Param("pageSize") int pageSize
	);

	/**
	 * 查询分页总数
	 * @Param sName
	 * @Param sProgram
	 * @Param iType
	 * @Param sMemo
	 * @return
	 */
	int findByPageCount(
		@Param("sName") String sName,
		@Param("sProgram") String sProgram,
		@Param("iType") Integer iType,
		@Param("sMemo") String sMemo
	);
	
	/**
	 * 判断是否存在相同记录
	 * @param sName
	 * @param sProgram
	 * @param sFileMd5
	 * @return
	 */
	int findSameDataCount(
		@Param("sName") String sName,
		@Param("sProgram") String sProgram,
		@Param("sFileMd5") String sFileMd5
	);
	
	/**
	 * 根据项目名,文件名和文件key查询数据
	 * @param sProgram
	 * @param sName
	 * @param sFileMd5
	 * @return
	 */
	FileCabinet findByNameAndKey(
		@Param("sProgram") String sProgram,
		@Param("sName") String sName,
		@Param("sFileMd5") String sFileMd5
	);

	/**
	 * 查找文件存储路径路径
	 * @param sId
	 * @return
	 */
	String findPathById(@Param("sId") String sId);
	
}
